package com.pair.micro.fee.modules.charge.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fhs.core.trans.vo.TransPojo;
import com.pair.micro.common.utils.DateUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@Schema(description = "收取费用")
public class ChargeDetailVO implements Serializable, TransPojo {
    private static final long serialVersionUID = 1L;

    @Schema(description = "id")
    private String id;
    @Schema(description = "projectId", required = true)
    @NotBlank(message = "收费项id不能为空")
    private String configId;
    @Schema(description = "应收金额", required = true)
    @NotNull(message = "应收金额不能为空")
    private BigDecimal receiveAmount;
    @Schema(description = "实收金额", required = true)
    @NotNull(message = "实收金额不能为空")
    private BigDecimal paidAmount;
    @Schema(description = "数据状态，20243001、正常  20243003、已退费  20243022、期初导入", required = true)
    private Integer state;
    @Schema(description = "开始时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date startTime;
    @Schema(description = "截止时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date endTime;
    @Schema(description = "按钮状态 1、显示退费删除按钮 0、不显示", required = true)
    private Integer btn;
    @Schema(description = "收据单号", required = true)
    @NotBlank(message = "收据单号不能为空")
    private String receiptNumber;
    @Schema(description = "收费方式", required = true)
    @NotBlank(message = "收费方式不能为空")
    private String chargeMethod;
    @Schema(description = "操作人id")
    private Integer operator;
    @Schema(description = "创建时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date createTime;
    @Schema(description = "临时开始时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date startCasualTime;
    @Schema(description = "临时截止时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date endCasualTime;

    @Schema(description = "收费账单集合")
    private List<ChargeReceiveVO> receiveVO;


}
